package com.bosssoft.hr.train.j2se.pojo.entity;/*
 * @Auther:hantianbing
 * @Date:2022/12/2
 * @Description:com.bosssoft.hr.train.j2se/pojo.entity
 */

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.Objects;
import java.util.Set;

/**
 * @ClassName User
 * @Description 用户类
 * @Author hantianbing
 * @Date 2022/12/2 12:36
 **/

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User extends BaseEntity{
    /**
     * 编号
     */
    private String code;
    /**
     * 姓名
     */
    private String name;
    /**
     * 密码
     */
    private String password;
    /**
     * 头像
     */
    private String profilePicture;
    /**
     * 生日 注意采用 Util.date
     */
    private Date birthday;
    /**
     *  电话号码
     */
    private String tel;
    /**
     *  邮箱
     */
    private String email;
    /**
     *  其他
     */
    private String other;
    /**
     * 备注
     */
    private String remark;
    /**
     * 部门id 这里可以考虑组合Department对象
     */
    private Long departmentId;
    /**
     * 职位id 关联职位表 这里可以考虑定位为 Position
     */
    private Long positionId;

    /**
     *
     * @param id
     */
    public User(Long id, String name ){
        this.id = id;
        this.name = name;
    }

    public User(Long id, String name, String code) {
        this.name = name;
        this.id = id;
        this.code =code;
    }

    //TODO 还有很多属性没有赋值，可以支持equals判断
    public User(User user){
        this.id = user.id;
        this.code = user.code;
        this.name = user.name;
    }

    @Override
    public boolean equals(Object o){
        if(o == this){return true; }
        if(o==null || o.getClass() != getClass()){return false; }
        if(!super.equals(o)){return false; }
        User user = (User) o;
        return Objects.equals(code, user.code) &&
                Objects.equals(name, user.name) && Objects.equals(id, user.id);
    }

    /**
     * 依据用户的 name， id， code 来判断是不是同一个用户
     * @return
     */
    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), code, name, id);
    }

}
